/**
 * 群裂变，新增参数类型
 */
export interface IFormParams {
    /** 步骤一
     * 基础信息字段
     */
    // 基础信息设置
    /**活动状态1 => 1:未开始 2:进行中 3:已结束 4:提前结束 */
    activity_status?: 1 | 2 | 3 | 4;
    /** 活动的创建时间-格式,详情接口会返回, 格式：2023-04-21 15:48:25 */
    created_at?: string;
    official_account_id: number | undefined; //公众号id
    activity_name: string;
    group_id: number;
    period_type: 1 | 2; // 1: 永久 || 2: 固定期限
    activity_time: any; // YYYY-MM-DD HH:mm:ss
    description: string;
    activity_info_switch: 1 | 2; // 1:关闭， 2: 开启
    activity_info_content: string; // (会包含、图片、音频、视频等信息)
    // 引流成员
    add_friends_switch: number;
    user_list: Array<{ id: number; name: string }>;
    helper_staff_divide: 1 | 2; // 1: 随机分配, 2: 溯源员工
    /** 步骤二
     * 奖品及群聊字段
     */
    // 奖品设置
    reward_type: 1 | 2; // 1: 阶梯奖励，2: 单一奖励
    reward_list: Array<IRewardRow>;
    reward_end_switch: 1 | 2; //  1-否 2-是
    /** 是否显示库存, 1: 关闭，2: 开启 */
    inventory_show_switch: 1 | 2; //  1-否 2-是
    // 群聊设置
    groupchat_type: 1 | 2; // 1: 普通拉群， 2: 无限拉群
    // > 普通拉群时才有，否者是 []
    groupchat_list: Array<IGroupRow>;
    groupchat: {
        groupchat_id?: number; //群id
        name?: string; //属性名称
        avatar?: string; // 头像，不传给后端
    };
    join_groupchat_rank: 1 | 2 | undefined; // 1: 按照顺序入群，2: 随机入群
    /** 步骤三
     * 分享设置
     */
    // 活动链接设置
    link_img: string; // 是url
    link_title: string;
    link_desc: string;
    // 欢迎语设置
    // 与之前的欢迎语结构一致, 只不过对应的welcome_material列表里的字段标识为:  is_default_link: boolean, 默认的描述，标题。封面前端是否需要传？？
    staff_welcome: any;
    groupchat_welcome: any;
    // 分享海报设置
    poster: {
        poster_type: number; //1: 海报库， 2: 本地上传
        poster_id: number | undefined; //海报库中海报id
        absolute_url: string; //海报图片url
        local_absolute_url?: string; //海报本地上传图片url
        poster_absolute_url?: string; //海报海报库图片url
        avatar_flag: number; //是否用户头像 1: 打开， 2: 关闭
        /** 头像展示类型 1: 圆形， 2: 方形 */
        avatar_type: 1 | 2;
        nickname_flag: number; //是否用户昵称  1: 打开， 2: 关闭
        nickname_color: string; //用户昵称颜色
        nickname_size: number; //用户昵称字体大小
        desc_flag: number; //是否描述 1: 打开， 2: 关闭
        desc_color: string; //描述颜色
        desc_size: number; //描述字体大小
        desc: string; //描述内容
        position: {
            avatarX: number;
            avatarY: number;
            nicknameX: number;
            nicknameY: number;
            qrcodeX: number;
            qrcodeY: number;
            descX: number;
            descY: number;
        }; //海报方位
    };
    /** 步骤四
     * 高级设置
     */
    // 奖品设置
    help_lose_switch: 1 | 2; // 1-关闭 2-开启
    release_method: 1 | 2; // 释放方式 1-领奖可释放 2-核销前可释放
    join_restrict_switch: 1 | 2; // 1-关闭 2-开启
    gender_restrict: 1 | 2 | 3; // 1: 不限，2: 男， 3: 女
    area_restrict: 1 | 2 | 3; // 1: 不限，2: 可参与地区， 3: 不可参与地区
    area_list: Array<string>; // 区域的code
    win_prize_loop_switch: 1 | 2; // 1-关闭 2-开启
    win_prize_loop_type: 1 | 2 | 3; // 1: 页面滚动 2: 滚动弹幕， 3: 轮播弹幕
    brush_switch: 1 | 2; // 1-关闭 2-开启
    brush_set: {
        time: number; //时间
        people: number; //人数
    };
    /** 奖品余量提示开关, 1: 关闭，2: 开启 */
    inventory_reminder_switch: 1 | 2; // 1-关闭 2-开启
    inventory_reminder_set: {
        num: number; //奖品数量
        cycle: 1 | 2; //周期(1: 余量减1，2：时间间隔)
        time: number; //间隔时间
    };
    auto_tag_switch: number; // 1-关闭 2-开启
    tag_rule: Array<ITagItem>;
}

/**
 * 页面类型
 */
export interface IPageType {
    edit: boolean;
    new: boolean;
    copy: boolean;
}

/**
 * 奖品参数类型
 */
export interface IRewardRow {
    // 奖品设置
    reward_type: number; // 1: 实物， 2: 红包
    reward_title: string;
    reward_image: string; // 是一段url
    reward_stock: number; // int 类型
    help_num?: number; // int 类型
    /** 追加库存数量 */
    add_stock?: number;
    // > 红包类型
    red_envelope_type: number; // 1: 普通， 2: 拼手气
    red_envelope_money: number; // float 类型,
    exchange_desc: string;
    red_exchange_desc?: string;
    // >> 拼手气红包
    red_envelope_total: number; // float 类型
    /** 拼手气红包最小值范围，该字段后端并不需要。前端只需用来做临时的变量，保存时把此字段的值替换到red_envelope_money即可 */
    red_envelope_money_min?: number;
    /** 拼手气最大范围值, */
    red_envelope_range: number;
    //}
    // 兑换设置
    exchange_usage_type: number; // 1: 兑换码, 2: 线下邮寄，
    exchange_code_type: number; // 1: 系统自动生成, 2: 导入兑奖码，
    exchange_file_list: Array<{
        file_name: string;
        file_url: string;
        code: string;
        num: number;
    }>;
    exchange_time: any;
    // >> 线下邮寄 时才有， 否则是 []
    mail_info: Array<{
        system_code: string;
        type: string; // 属性类型
        name: string;
    }>;
    is_update: number; //是否更新客户信息  1-关 2-开
}

/**
 * 奖品列表列类型
 */
export interface IRewardColumn {
    row: IRewardRow;
    column: Array<unknown>;
    $index: number;
}

/**
 * 群聊类型参数
 */
export interface IGroupRow {
    groupchat_id: number; //群id
    name: string; //属性名称
    limit: number; //群聊限制人数
}

/**
 * 群聊列表类型
 */
export interface IGroupColumn {
    row: IGroupRow;
    column: Array<unknown>;
    $index: number;
}

/**
 * 标签项类型
 */
export interface ITagItem {
    /**
     * @description 1: 参与用户
     * @description 2: 邀请人数打标 // 暂无
     * @description 3: 奖品打标 // 暂无
     * @description 4: 助力用户
     * @description 5: 领奖用户
     * @description 6: 中奖用户
     * @description 7: 助力人数
     * @description 8: 核销用户
     * @description 9: 达成阶梯
     * @description 10: 进群用户
     * @description 11: 裂变级别
     * @description 12: 净增用户
     * @description 13: 领取阶梯
     */
    type: 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13;
    assist_num: number; // 1,2,3,4,5 一二三四五级阶梯or助力人数or裂变等级
    tag_ids: Array<{
        id: number;
        name: string;
    }>;
}

/**
 * 选择标签弹窗回调数据类型
 */
export interface ITagData {
    data: Array<{ id: number; name: string }>;
    idList: Array<number>;
    labelChooseType: number;
    labelType: number;
}

// 判断是否打开了开关的key，在样机组件中使用到
export interface ISwitchKey {
    [prop: string]: {
        tabsKey: 'activilyInfo' | 'helpFrend' | 'winnersList';
        isOpenTabs?: (switchNum?: number) => boolean;
    };
}

/**
 * 新增和编辑用到的类型
 */
export interface ICreateOrEditParams {
    [prop: string]: any;
}

/**
 * 海报的类型
 */
export interface IPoster {
    [prop: string]: any;
}

/**
 * 样机标签栏枚举
 */
export type IActivilyTabsActived = 'activilyInfo' | 'helpFrend' | 'winnersList';
